Passed
Push — task/relative-resources ( 6eadd5 )
by Tristan
05:59
created

routes.ts ➔ baseApiUrl   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
1
function stripTrailingSlash(str: string): string {
2
  return str.endsWith("/") ? str.slice(0, -1) : str;
3
}
4
5
export function baseUrl(): string {
6
  const base = document.querySelector("head base");
7
  if (base !== null) {
8
    return stripTrailingSlash(base.getAttribute("href") ?? "");
9
  }
10
  return "";
11
}
12
13
export function basePathname(): string {
14
  return (new URL(baseUrl())).pathname;
15
}
16
17
export function baseApiUrl(version = 1): string {
18
  return `${baseUrl()}/api/v${version}`;
19
}
20
21
function applicationShow(
22
  locale: string,
23
  prefix: string,
24
  applicationId: number,
25
): string {
26
  return `/${locale}/${prefix}/applications/${applicationId}`;
27
}
28
29
function applicantShow(
30
  locale: string,
31
  prefix: string,
32
  applicantId: number,
33
): string {
34
  return `/${locale}/${prefix}/applicants/${applicantId}`;
35
}
36
37
export function managerApplicationShow(
38
  locale: string,
39
  applicationId: number,
40
): string {
41
  return applicationShow(locale, "manager", applicationId);
42
}
43
44
export function managerApplicantShow(
45
  locale: string,
46
  applicantId: number,
47
): string {
48
  return applicantShow(locale, "manager", applicantId);
49
}
50
51
export function managerEditProfile(locale: string): string {
52
  return `/${locale}/manager/profile`;
53
}
54
55
export function managerJobIndex(locale: string): string {
56
  return `/${locale}/manager/jobs`;
57
}
58
59
export function managerJobShow(locale: string, jobId: number): string {
60
  return `/${locale}/manager/jobs/${jobId}`;
61
}
62
63
export function managerJobApplications(locale: string, jobId: number): string {
64
  return `/${locale}/manager/jobs/${jobId}/applications`;
65
}
66
67
export function managerScreeningPlan(locale: string, jobId: number): string {
68
  return `/${locale}/manager/jobs/${jobId}/assessment-plan`;
69
}
70
71
export function applicationReviewUpdate(
72
  locale: string,
73
  applicationId: number,
74
): string {
75
  return `${baseApiUrl()}/applications/${applicationId}/review`;
76
}
77
78
export function jobBuilderIntro(locale: string, jobId?: number): string {
79
  if (jobId) {
80
    return `/${locale}/manager/jobs/${jobId}/builder/intro`;
81
  }
82
  return `/${locale}/manager/job-builder/intro`;
83
}
84
85
export function jobBuilderDetails(locale: string, jobId: number): string {
86
  return `/${locale}/manager/jobs/${jobId}/builder/details`;
87
}
88
89
export function jobBuilderEnv(locale: string, jobId: number): string {
90
  return `/${locale}/manager/jobs/${jobId}/builder/environment`;
91
}
92
93
export function jobBuilderImpact(locale: string, jobId: number): string {
94
  return `/${locale}/manager/jobs/${jobId}/builder/impact`;
95
}
96
97
export function jobBuilderTasks(locale: string, jobId: number): string {
98
  return `/${locale}/manager/jobs/${jobId}/builder/tasks`;
99
}
100
101
export function jobBuilderSkills(locale: string, jobId: number): string {
102
  return `/${locale}/manager/jobs/${jobId}/builder/skills`;
103
}
104
105
export function jobBuilderReview(locale: string, jobId: number): string {
106
  return `/${locale}/manager/jobs/${jobId}/builder/review`;
107
}
108
109
type FaqSection = "manager-who";
110
111
export function managerFaq(locale: string, faqSection?: FaqSection): string {
112
  const base = `/${locale}/manager/faq`;
113
  if (faqSection) {
114
    return `${base}#${faqSection}`;
115
  }
116
  return base;
117
}
118
119
export function hrJobIndex(locale: string): string {
120
  return `/${locale}/hr/jobs`;
121
}
122
export function hrJobSummary(locale: string, jobId: number): string {
123
  return `/${locale}/hr/jobs/${jobId}/summary`;
124
}
125
export function hrJobReview(locale: string, jobId: number): string {
126
  return `/${locale}/hr/jobs/${jobId}/review`;
127
}
128
export function hrJobPreview(locale: string, jobId: number): string {
129
  return `/${locale}/hr/jobs/${jobId}`;
130
}
131
export function hrScreeningPlan(locale: string, jobId: number): string {
132
  return `/${locale}/hr/jobs/${jobId}/assessment-plan`;
133
}
134
export function hrJobApplications(locale: string, jobId: number): string {
135
  return `/${locale}/hr/jobs/${jobId}/applications`;
136
}
137
export const hrApplicationShow = (
138
  locale: string,
139
  applicationId: number,
140
): string => applicationShow(locale, "hr", applicationId);
141
export const hrApplicantShow = (locale: string, applicantId: number): string =>
142
  applicantShow(locale, "hr", applicantId);
143
144
export function accountSettings(locale: string): string {
145
  return `/${locale}/settings`;
146
}
147